package main

import "fmt"

// 全局变量
var (
	name string = "jack"
	age  int    = 30
	isOk bool   = true
)

func main() {
	// 第一种：变量的使用方式：指定变量的类型，并赋值
	var a int = 10
	fmt.Println(a)

	// 第二种：不指定变量的类型，编译器会根据值的类型来决定变量的类型 (自动类型推断)
	var b = "tom"
	fmt.Println(b)

	// 第三种：指定变量类型，但不进行赋值，使用默认值
	var c string
	fmt.Println(c)

	// 第四种：省略var，注意 := 不能写成 = ; 只能用在函数体中
	d := "jerry"
	fmt.Println(d)

	// 第五种：批量声明变量
	var (
		e int    = 20
		f string = "alice"
		g bool   = true
	)
	fmt.Println(e, f, g)

	// 注意事项
	/*
		1. 声明变量必须使用，否则报错
		2. 变量名不能重复
		3. 变量名只能由字母、数字、下划线组成，且不能以数字开头
		4. 变量名不能是关键字
		5. 变量名区分大小写
		6. 函数外的每个语句都必须以关键字开头 (如 var、const、func 等)
		7. _ 多用于占位符，表示忽略某个值（匿名变量不占命令空间，不会分配内存；所以匿名变量之间不存在重复声明）
	*/

}
